﻿using System;
using System.Collections.Generic;
using JetBrains.Annotations;
using MugenMvvmToolkit.Interfaces.ViewModels;

namespace MugenMvvmToolkit.Interfaces
{
    /// <summary>
    ///     Represents the window manager that supports to show a view-model as dialog or window.
    /// </summary>
    public interface IViewModelWrapperProvider
    {
        /// <summary>
        ///     Wraps the specified view-model to a specified type.
        /// </summary>
        /// <param name="viewModel">The specified view-model.</param>
        /// <param name="wrapperType">The specified type to wrap.</param>
        /// <param name="parameters">The specified parameters, if any.</param>
        /// <returns>
        ///     An instance of <see cref="IViewModel" />.
        /// </returns>
        IViewModel WrapTo([NotNull] IViewModel viewModel, [NotNull] Type wrapperType, [CanBeNull] IDictionary<string, object> parameters);
    }
}